mkdir関数は、ディレクトリ(フォルダ)を作成します。
この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。
#include <sys/stat.h>
int mkdir(const char *pathname, mode_t mode);
*pathnameは作成するディレクトリをパス名で指定します。
modeはディレクトリのアクセス許可情報(パーミッション)を指定します。
戻り値として、処理が成功した場合は0が、エラーの場合は-1を返します。
第2引数のmodeについては、chmod関数をご覧ください。ただし、ここで指定した許可情報がそのまま付与されるわけではなく、実際の許可情報は mode & ~umask & 0777 となります。
次の例題プログラムでは、許可情報として0777(rwxrwxrwx)を指定していますが、umask値が0022のため、実際に付与される許可情報は0755(rwxr-xr-x)になっています。
プログラム 例
#include <stdio.h>
#include <sys/stat.h>
int main(int argc, char **argv)
{
int return_code = 0;
if (argc == 2) {
/* ディレクトリを作る */
if (mkdir(*(argv + 1),
S_IRUSR | S_IWUSR | S_IXUSR | /* rwx */
S_IRGRP | S_IWGRP | S_IXGRP | /* rwx */
S_IROTH | S_IXOTH | S_IXOTH) == 0) { /* rwx */
printf('%sを作成しました\n', *(argv + 1));
}
else {
printf('%sを作成できませんでした\n', *(argv + 1));
perror('');
return_code = 1;
}
}
else {
printf('実行時引数の数が不当です\n');
return_code = 2;
}
return return_code;
}
例の実行結果
$ ls -ld DIR3 ls: cannot access DIR3: そのようなファイルやディレクトリはありません $ $ umask 0022 $ ./mkdir.exe ./DIR3 ./DIR3を作成しました $ $ ls -ld DIR3 drwxr-xr-x 2 user users 4096 2008-08-01 14:02 DIR3 $